Unlike regular system shells, Eshell never invokes kernel
functions directly, such as exec(3). Instead, it
uses the Lisp functions available in the Emacs Lisp library. It
does this by transforming the input line into a callable Lisp
form.3
The command can be either an Elisp function or an external command. Eshell looks first for an alias with the same name as the command, then a built-in command or a function with the same name; if there is no match, it then tries to execute it as an external command.
The semicolon (;) can be used to separate
multiple command invocations on a single line. A command
invocation followed by an ampersand (&) will be
run in the background. Eshell has no job control, so you can not
suspend or background the current process, or bring a background
process into the foreground. That said, background processes
invoked from Eshell can be controlled the same way as any other
background process in Emacs.